import Vue from 'vue';
import Vuex from 'vuex';

import admin from './modules/admin'

Vue.use(Vuex);

////////////////////////////////////////////////
// 重构，深度加载vuex模块
// 吴野
// 2023-01-09 15:42:46
////////////////////////////////////////////////
// vuex动态载入
// 在src文件夹下，任意位置创建：vuex.XXX.js文件即可，引入的时候 ...mapActions('extend/XXX', ['方法名']),...mapState('extend/XXX', ['属性名'])
let files = require.context('./extend', true, /vuex\.[^]*\.js$/);
let _vuexs = {};
files.keys().forEach(key => {
    let _V = files(key).default;
    if (key.match(/vuex\.[^]*\.js$/)[0].split('.')[1]) {
        if (_vuexs.hasOwnProperty.call(_vuexs, key.match(/vuex\.[^]*\.js$/)[0].split('.')[1])) {
            icu.log.capsule(key.match(/vuex\.[^]*\.js$/).input, "重复", 'error')
            return false;
        }else{
            _vuexs[key.match(/vuex\.[^]*\.js$/)[0].split('.')[1]] = _V;
        }
    }
});
// vuex插件动态载入
let _plugins = {}
let pluginsFiles = require.context('./extend', true, /plugin\.[^]*\.js$/);
pluginsFiles.keys().forEach(key => {
    let _P = pluginsFiles(key).default;
    if (key.match(/plugin\.[^]*\.js$/)[0].split('.')[1]) {
        _plugins[key.match(/plugin\.[^]*\.js$/)[0].split('.')[1]] = _P;
    }
})
// _plugins.tab.updateTabbar() 需要往plugins中动态添加
export default new Vuex.Store({
    plugins: [],
    modules: {
        extend: {
            namespaced: true,
            modules: _vuexs
        },
        admin
    }
})
